最終発表
プログラムコード
●キースタンド
・Arudinoのソースコード(ファミマの音声)
- int val=0;
- int from_pc='0';
- #define BEATTIME 310
- #define PIN 11
-
- #define LA 880
- #define FA 740
- #define MI 659
- #define RE 587
- #define DLA 440
- void setup() {
- pinMode(11,OUTPUT);
- Serial.begin(9600);
- }
- void loop(){
-
- if(Serial.available() > 0){
- from_pc = Serial.read();
- }
- //1が送られてきたら音声が鳴る、0だったら鳴らない
- if (from_pc=='1'){
- pinMode(11,HIGH);
- //ファ#レラレミララミファ#ミラレ
- tone(PIN,FA,BEATTIME) ; // ファ#
- delay(BEATTIME) ;
- tone(PIN,RE,BEATTIME) ; // レ
- delay(BEATTIME) ;
- tone(PIN,DLA,BEATTIME) ; // dラ
- delay(BEATTIME) ;
- tone(PIN,RE,BEATTIME) ; // レ
- delay(BEATTIME) ;
- tone(PIN,MI,BEATTIME) ; // ミ
- delay(BEATTIME) ;
- tone(PIN,LA,BEATTIME) ; // ラ
- delay(BEATTIME*2) ;
- tone(PIN,DLA,BEATTIME) ; // dラ
- delay(BEATTIME) ;
- tone(PIN,MI,BEATTIME) ; // ミ
- delay(BEATTIME) ;
- tone(PIN,FA,BEATTIME) ; // ファ#
- delay(BEATTIME) ;
- tone(PIN,MI,BEATTIME) ; // ミ
- delay(BEATTIME) ;
- tone(PIN,DLA,BEATTIME) ; // dラ
- delay(BEATTIME) ;
- tone(PIN,RE,BEATTIME) ; // レ
- delay(BEATTIME) ;
-
- // exit the loop
- exit(0); //0 is required to prevent error.
- }
- else if (from_pc=='0'){
- pinMode(11,LOW);
- }
-
- delay(5000);
- }
・Pythonのソースコード(ファミマの音声)
- import doyolab
- import time
- #シリアルポートを入力-------------------------
- serial_port='COM4'
- #-------------------------------------------
- #Arduinoとのシリアル通信設定-------------------
- my_arduino = doyolab.set_serial(serial_port,9600)
- #-------------------------------------------
- #user_key、sub_idの設定---------------------
- #自分のユーザーkeyを書く
- user_key=
- #subIDはどのデバイスからのデータか、どのプロジェクトのデータかなどを認識するために使います
- sub_id='pc'
- #-------------------------------------------
- # --------------------------------------------------------------
- while True:
- # IoTサーバーからデータの取得----------------------------------------------------
- # user_key
- # sub_id
- # データ数:最新のデータからいくつのデータを取得するか?下記の例では1(最新のデータのみ)
- data_list = doyolab.getData_From_doyolabIoTserver(user_key, sub_id, 1)
- # リスト形式で取得される
- print(data_list)
- #0番目のデータの塊の中の2番目のデータを読みたい(0から始まるので、本当は3番目)
- int_data =int(data_list[0][2])
- print(int_data)
- # --------------------------------------------------------------
- # int_dataが400より大きかったら、'1'を送信(音声を鳴らせる)、それ以外の時は'0'を送る(音声を鳴らせない)
- if int_data>400:
- to_arduino = '1'
- else:
- to_arduino = '0'
- #Arduinoにデータを送る
- my_arduino.write(to_arduino.encode())
- time.sleep(5)#指定した秒数を待つ(msでなく秒なので、注意) サーバーに負荷がかかるので5より小さい値は設定しないでください。(実装する際は可能な限り大きな数字にしてください)
●写真立て
・Arudinoのソースコード(明るさセンサー)
- void setup() {
- // put your setup code here, to run once:
- Serial.begin(9600);
- }
- void loop() {
- // put your main code here, to run repeatedly:
- int val=0;
- val=analogRead(1);
- Serial.println(val);
- delay(500);
- }
・Pythonのソースコード(明るさセンサー)
- import doyolab
- #シリアルポートを入力-------------------------
- serial_port='COM5'
- #-------------------------------------------
- #Arduinoとのシリアル通信設定-------------------
- my_arduino = doyolab.set_serial(serial_port,9600)
- #-------------------------------------------
- #user_key、sub_idの設定---------------------
- #自分のユーザーkeyを書く
- user_key=
- #subIDはどのデバイスからのデータか、どのプロジェクトのデータかなどを認識するために使います
- sub_id='pc'
- #-------------------------------------------
- #while Trueは無限ループ#----------------------
- while True:
- # Arduinoからreadlineコマンドでデータを取得し、data_from_arduinoという変数に格納
- data_from_arduino=my_arduino.readline()
- #stripコマンドで、data_from_arduinoの中の余計な文字を削除
- #さらにintで文字で送られてきたデータをint型に変換
- data=int(data_from_arduino.strip())
- print(data)
- # データの設定--------------------------------
- datetime_data = ""
- int_data = data #Arduinoから受け取った値をここでint_dataにいれる
- float_data = ""
- txt_data = ""
- # -------------------------------------------
- # データの送信---------------------------------
- # user_key
- # sub_id
- # 日付データ(空白にしてもサーバーで自動で日付を入れてくれる):datetim_data
- # 整数データ:int_data
- # 実数データ(小数を含むデータ):float_data
- # テキストデータ:txt_data
- ret = doyolab.sendData_To_doyolabIoTserver(user_key, sub_id, datetime_data, int_data, float_data, txt_data)
- print(ret)
- # -------------------------------------------
- #-------------------------------------------
感想
今回の課題制作では最初に製作したいと構想していたものを形にできなかったことで後悔が残ってる
制作工程での反省点としては、まずアイデアを出し合う時点でコミュニケーション不足があったことである。
そのため、最初のアイデアからあまり完成形が見えずに始めてしまった部分がある
次に制作段階で作業状況の進捗共有不足が目立ち、加えてアイデアをより良くするための話し合いなどもすることはできなかった
このような状況ではあったが、最終発表までにある程度アイデアを形のすることができたのは班員の協力ができたからだと思う。
今回の最終課題で0から1のアイデアを出すことの難しさ、理想のものを具現化することの難しさを痛感した。
しかし、期限のある中でどれだけそこに近づけて完成させるかと言った技術をつけることができたと感じている
班員ホームページ
平野蒼依
まえやん
まさき
Yrina